package reflection;

import java.util.Date;

public class GetClassObject {
    public static void main(String[] args) throws ClassNotFoundException {
        // 目标类：用于演示的User类
        class User {}

        // 方式1：通过类名.class（编译时已知类型）
        Class<User> userClass1 = User.class;
        System.out.println("方式1：" + userClass1.getName()); // 输出类的全限定名

        // 方式2：通过对象.getClass()（已有对象实例）
        User user = new User();
        Class<? extends User> userClass2 = user.getClass();
        System.out.println("方式2：" + userClass2.getName());

        // 方式3：通过Class.forName("全限定类名")（运行时动态加载，最常用）
        Class<?> dateClass = Class.forName("java.util.Date"); // 需要处理ClassNotFoundException
        System.out.println("方式3：" + dateClass.getName());

        // 验证：同一类的Class对象是单例的
        System.out.println("是否为同一Class对象：" + (userClass1 == userClass2)); // true
    }
}
